package com.svs.framework.base.mybatis.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
public @interface JoinTable {

	 /**
     * 连接类型
     */
    Type type() default Type.JOIN;
    public enum Type{
        JOIN("JOIN"), // INNER JOIN
        LEFT_JOIN("LEFT JOIN"),
        RIGHT_JOIN("RIGHT JOIN");
        private final String value;
        Type(String value) { this.value = value; }
        public String value() { return this.value; }
    }

    /**
     * 连接的表，指定实体Class
     */
    Class<?> entity();

    /**
     * 当前表别名
     */
    String alias();

    /**
     * 连接表条件
     */
    String on();

    /**
     * 对应主表中对应的属性名，若不指定，则根据entity()进行首字母小写得到属性名（例如：Config 转换为   config）
     */
    String attrName() default "";

    /**
     * 连接表，返回的列，若不指定，则读取entity()的所有列。
     */
    Column[] columns() default {};
}
